/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package team11;

/**
 * 主程序类 神经网络函数逼近实验的入口点
 *
 * @author 朱婧雯
 */
public class Main {

    public static void main(String[] args) {

        MyNeuralNetwork bpNet = new MyNeuralNetwork();

        // 设置目标函数
        bpNet.setSimuFun(new TargetFunction());

        // 初始化网络
        bpNet.init();

        System.out.println("=== 梯度下降法训练（带动量） ===");
        bpNet.trainByGd();
        bpNet.evaluatePerformance("梯度下降法");

        // 使用外部测试集
        System.out.println("\n=== 外部测试集评估 ===");
        bpNet.testWithExternalData();

        // 重新初始化网络进行遗传算法训练
        System.out.println("\n=== 遗传算法训练（自适应变异） ===");
        bpNet.init();
        bpNet.trainByGa();
        bpNet.evaluatePerformance("遗传算法");

        // 使用外部测试集
        System.out.println("\n=== 外部测试集评估 ===");
        bpNet.testWithExternalData();

        // 训练时间比较
        System.out.println("\n=== 训练时间对比 ===");
        bpNet.compareTrainingTime();

        // 保存模型
        bpNet.saveModel("improved_model.ser");

        System.out.println("\n=== 实验完成 ===");
    }
}
